#include "mypushbutton.h"
#include <QDebug>
#include <QPropertyAnimation>


//正常显示图片路径  按下后切换图片路径
MyPushButton::MyPushButton(QString normalImg,QString pressImg)
{
    this->normalPath=normalImg;
    this->pressPath=pressImg;

   //创建Qpixmap对象
    QPixmap pix;
    bool ret=pix.load(this->normalPath);
    if(!ret)
    {
        QString str=QString("图标加载失败，失败的路径是：%1").arg(this->normalPath);
        qDebug()<<str;
    }

    //设置按钮固定尺寸
    this->setFixedSize(pix.width(),pix.height());
    //设置不规则样式
    this->setStyleSheet("QPushButton{border:0px;}");
    //设置图标
    this->setIcon(pix);
    //设置图标大小
    this->setIconSize(QSize(pix.width(),pix.height()));

}

//向上跳跃
void MyPushButton::zoom1()
{
    //创建动画对象
    QPropertyAnimation *animation=new QPropertyAnimation(this,"geometry");
    //设置动画间隔
    animation->setDuration(300);
    //设置起始位置
    animation->setStartValue(QRect(this->x(),this->y(),this->width(),this->height()));
    //设置结束位置
    animation->setEndValue(QRect(this->x(),this->y()-15,this->width(),this->height()));
    //设置动画曲线
    animation->setEasingCurve(QEasingCurve::OutBounce);
    //执行动画
    animation->start(QAbstractAnimation::DeleteWhenStopped);

}
//向下跳跃
void MyPushButton::zoom2()
{
    //创建动画对象
    QPropertyAnimation *animation=new QPropertyAnimation(this,"geometry");
    //设置动画间隔
    animation->setDuration(300);
    //设置起始位置
    animation->setStartValue(QRect(this->x(),this->y()-15,this->width(),this->height()));
    //设置结束位置
    animation->setEndValue(QRect(this->x(),this->y(),this->width(),this->height()));
    //设置动画曲线
    animation->setEasingCurve(QEasingCurve::OutBounce);
    //执行动画
    animation->start(QAbstractAnimation::DeleteWhenStopped);
}

void MyPushButton::mousePressEvent(QMouseEvent *e)
{

    //按下的路径不为空，切换图片
    if(this->pressPath!="")
    {
        //创建Qpixmap对象
         QPixmap pix;
         bool ret=pix.load(this->pressPath);
         if(!ret)
         {
             QString str=QString("图标加载失败，失败的路径是：%1").arg(this->pressPath);
             qDebug()<<str;
         }

         //设置按钮固定尺寸
         this->setFixedSize(pix.width(),pix.height());
         //设置不规则样式
         this->setStyleSheet("QPushButton{border:0px;}");
         //设置图标
         this->setIcon(pix);
         //设置图标大小
         this->setIconSize(QSize(pix.width(),pix.height()));
    }

    //其他事情交给父类处理
    QPushButton::mousePressEvent(e);
}

void MyPushButton::mouseReleaseEvent(QMouseEvent *e)
{
    //按下的路径不为空，还原图片
    if(this->pressPath!="")
    {
        //创建Qpixmap对象
         QPixmap pix;
         bool ret=pix.load(this->normalPath);
         if(!ret)
         {
             QString str=QString("图标加载失败，失败的路径是：%1").arg(this->normalPath);
             qDebug()<<str;
         }

         //设置按钮固定尺寸
         this->setFixedSize(pix.width(),pix.height());
         //设置不规则样式
         this->setStyleSheet("QPushButton{border:0px;}");
         //设置图标
         this->setIcon(pix);
         //设置图标大小
         this->setIconSize(QSize(pix.width(),pix.height()));
    }

    //其他事情交给父类处理
    QPushButton::mouseReleaseEvent(e);
}
